package com.app.outdoor.InvoikeServices;

import java.util.ArrayList;

import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;

import android.content.Context;
import android.util.Log;

import com.app.Activity.CommonUtilities;
import com.app.Network.Protocol;
import com.app.outdoor.pojo.NguoiDungPOJO;
import com.google.android.gcm.GCMRegistrar;

public class HeThongInvoike extends BaseInvoike {
	private static String URL = Protocol.SERVER_URL + "/HeThong";

	public HeThongInvoike() {
	}

	public static boolean register(final Context context) {
		boolean rs = false;
		try {
			GCMRegistrar.checkDevice(context);
			GCMRegistrar.checkManifest(context);

			// Kiểm tra device đã đăng ký với GCM chưa
			final String regId = GCMRegistrar.getRegistrationId(context);
			Log.d(Protocol.TAG, "reg ID= " + regId);
			if (regId == "") {
				Log.d(Protocol.TAG, "Tiến hành đăng ký với GCM" + regId);
				GCMRegistrar.register(context, Protocol.SENDER_ID);
			} else {
				// Tiến hành đăng ký trên MES-server
				Log.d(Protocol.TAG, "kiểm tra đăng ký DEVICE trên MES-server");
				ArrayList<NameValuePair> par = new ArrayList<NameValuePair>();
				par.add(new BasicNameValuePair(Protocol.CMD, Protocol.DANG_KY_DEVICE));
				par.add(new BasicNameValuePair(Protocol.REG_ID, regId));
				String dangKy = post(URL, par);
				Log.d(Protocol.TAG, "rs=" + dangKy);
				// Nếu đăng ký trên server ko được thì bỏ đăng ký trên GCM
				if (!dangKy.trim().equals("true") && !dangKy.trim().equals("false")) {
					Log.d(Protocol.TAG, "Hủy đăng ký trên GCM");
					GCMRegistrar.unregister(context);
					rs = false;
				} else {
					Log.d(Protocol.TAG, "Đã ĐK trên MES-Server");
					GCMRegistrar.setRegisteredOnServer(context, true);
					rs = true;
				}

			}
		} catch (Exception e) {
			return false;
		}
		return rs;

	}

	public static boolean DangNhap(String tenDangNhap, String matKhau, String regID) throws Exception {
		Log.d(Protocol.TAG, "Đăng nhập");
		ArrayList<NameValuePair> params = new ArrayList<NameValuePair>();
		params.add(new BasicNameValuePair(Protocol.CMD, Protocol.DANG_NHAP));
		params.add(new BasicNameValuePair(Protocol.TEN_DANG_NHAP, tenDangNhap));
		params.add(new BasicNameValuePair(Protocol.MAT_KHAU, matKhau));
		params.add(new BasicNameValuePair(Protocol.REG_ID, regID));
		boolean dangNhap = false;
		String rs = post(URL, params);
		Log.d(Protocol.TAG, "Đăng nhập xong");
		if (rs.trim().equals("false")) {
			dangNhap = false;
		} else {
			NguoiDungPOJO nd = new NguoiDungPOJO();
			dangNhap = nd.parse(rs);
			if (dangNhap) {
				if (CommonUtilities.nguoiDung == null) {
					CommonUtilities.nguoiDung = new NguoiDungPOJO();
				}
				CommonUtilities.nguoiDung.setId(nd.getId());
				CommonUtilities.nguoiDung.setTenDangNhap(nd.getTenDangNhap());
			}
		}
		return dangNhap;
	}

	public static String layTinNhan(String tenDangNhap) throws Exception {
		Log.d(Protocol.TAG, "Lấy tin nhắn");

		ArrayList<NameValuePair> params = new ArrayList<NameValuePair>();
		params.add(new BasicNameValuePair(Protocol.CMD, Protocol.LAY_TIN_NHAN));
		params.add(new BasicNameValuePair(Protocol.TEN_DANG_NHAP, tenDangNhap));
		String rs = post(URL, params);
		return rs;
	}

	public static void guiTinNhanChat(String nguoiGui, String nguoiNhan, String noiDung) throws Exception {

		ArrayList<NameValuePair> params = new ArrayList<NameValuePair>();
		params.add(new BasicNameValuePair(Protocol.CMD, Protocol.GUI_TIN_NHAN));
		params.add(new BasicNameValuePair(Protocol.NGUOI_GUI, nguoiGui + ""));
		params.add(new BasicNameValuePair(Protocol.NGUOI_NHAN, nguoiNhan + ""));
		params.add(new BasicNameValuePair(Protocol.NOI_DUNG, noiDung));
		String rs = post(URL, params);
		Log.d(Protocol.TAG, "Gửi tin nhắn chat");
	}

	public static String getContact(String tenDangNhap) throws Exception {
		ArrayList<NameValuePair> params = new ArrayList<NameValuePair>();
		params.add(new BasicNameValuePair(Protocol.CMD, Protocol.DANH_SACH_NHOM));
		params.add(new BasicNameValuePair(Protocol.TEN_DANG_NHAP, tenDangNhap));
		String rs = post(URL, params);
		return rs;
	}
	public static String getSoTinNhanOffline(int idNguoiDung) throws Exception{
		ArrayList<NameValuePair> params = new ArrayList<NameValuePair>();
		params.add(new BasicNameValuePair(Protocol.CMD, Protocol.SO_LUONG_TIN_NHAN_OFFLINE));
		params.add(new BasicNameValuePair(Protocol.ID_NGUOI_DUNG, idNguoiDung+""));
		String rs = post(URL, params);
		return rs;
	}
	public static String layTinNhan(int idNguoiDung) throws Exception{
		ArrayList<NameValuePair> params = new ArrayList<NameValuePair>();
		params.add(new BasicNameValuePair(Protocol.CMD, Protocol.LAY_TIN_NHAN));
		params.add(new BasicNameValuePair(Protocol.ID_NGUOI_DUNG, idNguoiDung+""));
		String rs = post(URL, params);
		return rs;
	}
	public static String capNhatDaDocTinNhan(int idTinNhan) throws Exception{
		ArrayList<NameValuePair> params = new ArrayList<NameValuePair>();
		params.add(new BasicNameValuePair(Protocol.CMD, Protocol.LAY_TIN_NHAN));
		params.add(new BasicNameValuePair(Protocol.ID, idTinNhan+""));
		String rs = post(URL, params);
		return rs;
	}
}
